/-boot
/-docs
/-editor
/-files
/-files-old
/-imports
/-layout
/-shell
/-storage ...
/-storage/attached ...
/-storage/attached/api
/-storage/attached/dom
/-storage/attached/indexedDB ...
DetectStorage.ts
FileData.ts
LoadStorage.ts
MetadataData.ts
StorageAccess.ts
StorageDetect.ts
UpdateStorage.ts
functions.ts
/-storage/attached/localStorage
/-storage/attached/webSQL
/-tests
/-typings
Dom.ts
TypeScriptService.ts
functions.ts
ko.ts
nteapo.html
persistence.api.ts
persistence.ts
shell.ts
teapo.html
teapo.ts
try.html
try.js
​x
31
      }
32
​
33
      for (var fullPath in byFullPath) if (byFullPath.hasOwnProperty(fullPath)) {
34
​
35
        var pbag = byFullPath[fullPath];
36
​
37
        if (!pbag) {
38
          var deleteRequest = filesStore['delete'](fullPath);
39
          outstandingRequests++;
40
          deleteRequest.onerror = (errorEvent) => oneError(errorEvent, 'update: objectStore(files).delete(' + fullPath+')');
41
          deleteRequest.onsuccess = (event) => {
42
            oneCompleted();
43
          };
44
        }
45
        else {
46
          var getRequest = filesStore.get(fullPath);
47
          getRequest.onerror = (errorEvent) => oneError(errorEvent, 'update: objectStore(files).delete(' + fullPath + ')');
48
          getRequest.onsuccess = (event) => {
49
​
50
            var fileData: FileData = getRequest.result || { path: fullPath, properties: {} };
51
​
52
            var properties = fileData.properties || (fileData.properties = {});
53
            for (var p in pbag) if (pbag.hasOwnProperty(p)) {
54
              var v = pbag[p];
55
              if (v === null || typeof v === 'undefined')
56
                delete properties[p];
57
              else
58
                properties[p] = v;
59
            }
60
​
61
            var putFile = filesStore.put(fileData);
62
            getRequest.onerror = (errorEvent) => oneError(errorEvent, 'update: objectStore(files).put(' + fullPath + ')');
63
            putFile.onsuccess = (event) =>
64
              this._updateEditedUTC(
65
                timestamp,
66
                transaction,
67
                (errorEvent) => callback(wrapErrorEvent(errorEvent, 'update: _updateEditedUTC')));
68
          };
69
        }
70
        
71
      }
72
​
73
      oneCompleted();
74
    }
75
​
76
    read(
77
      fullPath: string,
78
      callback: (error: Error, properties: { [property: string]: string; }) => void): void {
79
​
80
      var transaction = this._db.transaction('files');
81
      transaction.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'read: transaction'), null);
82
      var filesStore = transaction.objectStore('files');
83
      var getRequest = filesStore.get(fullPath);
84
      getRequest.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'read: get(' + fullPath +')'), null);
85
      getRequest.onsuccess = (event) => {
86
​
87
        var fileData: FileData = getRequest.result;
88
​
89
        if (!fileData)
90
          callback(new Error('File not found: ' + fullPath + '.'), null);
91
        else
92
          callback(null, fileData.properties);        
93
        
94
      };
95
    }
96
​
97
    private _updateEditedUTC(now: number, transaction: IDBTransaction, callback: (errorEvent: ErrorEvent) => void) {
98
      var metadataStore = transaction.objectStore('metadata');
99
​
100
      var metadataData = { property: 'editedUTC', value: Date.now() };
101
      var putMetadata = metadataStore.put(metadataData);
102
      putMetadata.onerror = (errorEvent) => callback(errorEvent);
103
      putMetadata.onsuccess = (event) => callback(null);
104
    }
105
​
106
  }
107
​
108
  
109
}
89:54 parameter string Error(message?: string): Error